package com.bj58.mis.apm.server.statistics.suggest.parameterize;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @Author: wangxw
 * @Date: 2018/10/20 17:36
 */
public class ProposalsUtil {

    /**
     * 建议模板
     */
    private final static String PROPOSAL_ROWKEY1 = "rowkey的顺序按照cube设置分析中的rowkey出现频次排序，出现次数多的排前面。";
    private final static String PROPOSAL_ROWKEY2 = "重合率分析中，如果相对重合率比较高则减少的维度并没有影响数据的容量，所以减少的维度可以被删除。";

    private final static String PROPOSAL_EXIST = "对已有的聚合组#v1，依据查询使用情况得出删除和增加的维度、强制维度、联合维度。";
    private final static String PROPOSAL_NEW1 = "根据查询需要，";
    private final static String PROPOSAL_NEW2 = "新增聚合组#v1，包括维度:#v2";

    private final static List<String> defaultList = new ArrayList<>();
    static{
        defaultList.add(PROPOSAL_ROWKEY1);
        defaultList.add(PROPOSAL_ROWKEY2);
    }

    /**
     * 通用建议描述
     * @return
     */
    public static List<String> getProposalDefault(){
        return defaultList;
    }

    /**
     * 已存在聚合组建议
     * @param group
     * @return
     */
    public static String getProposalExist(String group){
        return PROPOSAL_EXIST.replace("#v1", group);
    }

    public static String getProposalNew(Map<String, String> groups) {
        StringBuilder sb = new StringBuilder(PROPOSAL_NEW1);
        for(String key : groups.keySet()){
            sb.append(PROPOSAL_NEW2.replace("#v1", key).replace("#v2", groups.get(key)));
            sb.append("；");
        }
        return sb.substring(0, sb.length() - 1) + "。";
    }

    /**
     * 将字符串集合转换为"S1、S2和S3"格式
     * @param values
     * @return
     */
    public static String getString(List<String> values){
        StringBuilder sb = new StringBuilder();
        for(int i = 0 ; i < values.size() ; i++){
            if(i == 0){
                sb.append(values.get(i));
            }else if(i == values.size() - 1){
                sb.append("和"+values.get(i));
            }else{
                sb.append("、"+values.get(i));
            }
        }
        return sb.toString();
    }

}
